How to fix OpenGL/SDL runtime error which is probobly caused by adding textures [closed]

Posted by Arturs Lapins on Stack Overflow See other posts from Stack Overflow or by Arturs Lapins
Published on 2012-11-24T21:36:51Z Indexed on 2012/11/25 11:04 UTC
Read the original article Hit count: 207

Filed under:
|
|
|
|

Hello I've recently worked with OpenGL and SDL and I was adding textures to my GL_QUADS and when I ran my program I came across with a runtime error. I've searched all over the internet for a fix but I couldn't find anything so I guess I had one more option. Asking here. So here is some of my code.

int loadTexture(std::string fileName){
   SDL_Surface *image=IMG_Load(fileName.c_str());
   SDL_DisplayFormatAlpha(image);
   unsigned int id;
   glGenTextures(1,&id);
   glBindTexture(GL_TEXTURE_2D,&id);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
   glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
   glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,image->w,image >h,0,GL_RGBA,GL_UNSIGNED_BYTE,image->pixels);
   SDL_FreeSurface(image);
   return id;
}

That's my loadTexture function.

void init()
{
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0, 800.0 / 600.0, 1.0, 500.0);
    glMatrixMode(GL_MODELVIEW);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_TEXTURE_2D);
    tex=loadTexture("test.png");
}

That's my init function for OpenGL. Btw I have declared my tex variable.

    void render()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -10.0);
    glRotatef(rotation, 1.0, 1.0, 1.0);
    glBindTexture(GL_TEXTURE_2D, tex);
    glBegin(GL_QUADS);
        glTexCoord2f(1.0, 0.0);
        glVertex3f(-2.0, 2.0, 0.0);
        glTexCoord2f(1.0, 1.0);
        glVertex3f(2.0, 2.0, 0.0);
        glTexCoord2f(1.0, 0.0);
        glVertex3f(2.0, -2.0, 0.0);
        glTexCoord2f(0.0, 0.0);
        glVertex3f(-2.0, -2.0, 0.0);
    glEnd();
}

That's my render function for all my OpenGL render stuff... The render function is called in the main function which contains a game loop.

Here is the runtime error when I run it with Visual C++

Unhandled exception at 0x004ffee9 in OpenGL Crap.exe: 0xC0000005: Access violation reading location 0x05c90000.

So I have only had this error when I added textures... ... So I found where the error occured it was at this line

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,image->w,image->h,0,GL_RGBA,GL_UNSIGNED_BYTE,image->pixels);

but I have totally no Idea what could it be.

Update

Only thanks to zero298

© Stack Overflow or respective owner

Related posts about c++

Related posts about opengl